var _n24;
var cc__extends = __extends;
var cc__decorate = __decorate;
var cc__importDefault = __importDefault;
Object.defineProperty(exports, "__esModule", {
  value: true
});
var $1$yyComponent = require("yyComponent");
var s = cc__importDefault($1$yyComponent);
var cc__decorator = cc._decorator;
var ccp_ccclass = cc__decorator.ccclass;
var ccp_property = cc__decorator.property;
var def_MajiangAnimation = function (t) {
  function _ctor() {
    const e = null !== t && t.apply(this, arguments) || this;
    // 初始化对象属性
    e.majiangArr = [];
    e.renwu = null;
    e.zoumajiangArr = [];
    e.skinName = [
      "中黄东", "天蓝冬", "橙秋", "粉南", "紫春",
      "红中", "绿夏", "绿灰发", "蓝西", "黄北"
    ];
    e.nowSkin = ""; // 当前皮肤
    e.nowNumber = 0; // 当前数字

    return e; // 返回对象
  }
  cc__extends(_ctor, t);
  _ctor.prototype.start = function () {
    this.rSkin();
    this.addmj();
    this.schedule(this.addmj, 4.5);
  };
  _ctor.prototype.addmj = function () {
    const t = this; // 使用 const 确保 t 变量不被意外重定义
    this.renwu.active = true; // 激活 renwu 节点
    this.renwu.x = -400; // 设置初始位置

    // 定义一个函数来设置皮肤
    const setSkin = () => {
      t.renwu.getComponent(sp.Skeleton).setSkin(t.nowSkin);
    };

    // 安排在 0.1 秒后设置皮肤
    this.scheduleOnce(setSkin);

    // 播放走路动画
    this.renwu.getComponent(sp.Skeleton).setAnimation(0, "zoulu", true);

    // 使用 Tween 动画
    cc.tween(this.renwu)
      .to(1.5, { x: 0 }) // 动画持续 1.5 秒，向 x=0 位置移动
      .call(() => {
        t.renwu.getComponent(sp.Skeleton).setAnimation(0, "daiji", true); // 切换到待机动画
      })
      .delay(0.3) // 延迟 0.3 秒
      .to(0.2, { opacity: 0 }) // 在 0.2 秒内将透明度设置为 0
      .call(() => {
        t.renwu.active = false; // 关闭 renwu 节点
        t.renwu.opacity = 255; // 恢复透明度
        t.shangzhuo(); // 调用 shangzhuo 方法
      })
      .start(); // 开始动画
  };
  _ctor.prototype.rSkin = function () {
    var t = this.skinName[Math.floor(Math.random() * this.skinName.length)];
    this.nowSkin = t;
  };
  _ctor.prototype.shangzhuo = function () {
    const t = this; // 使用 const 确保 t 变量不被意外重定义
    this.nowNumber++; // 当前数字加一

    // 定义一个函数来处理麻将显示
    const showMajiang = (index) => {
      const majiang = o.majiangArr[index];
      if (majiang) {
        majiang.active || (majiang.opacity = 0); // 如果未激活，设置透明度为0
        majiang.active = true; // 激活麻将
        cc.tween(majiang).to(0.2, { opacity: 255 }).start(); // 动画淡入
        o.scheduleOnce(() => {
          majiang.getComponent(sp.Skeleton).setSkin(t.nowSkin); // 设置皮肤
        });
      }
    };

    const o = this; // 将上下文保存到 o

    // 显示麻将
    for (let n = 0; n < this.nowNumber; n++) {
      showMajiang(n);
    }

    // 如果当前数字达到或超过4
    if (this.nowNumber >= 4) {
      this.scheduleOnce(() => {
        const hule = t.node.getChildByName("hule");
        hule.active = true; // 激活“胡了”节点
        hule.getComponent(sp.Skeleton).setAnimation(0, "animation", false); // 设置动画
        t.scheduleOnce(() => {
          hule.active = false; // 一秒后隐藏“胡了”
        }, 1);

        // 定义函数以淡出麻将
        const fadeOutMajiang = (majiang) => {
          cc.tween(majiang)
            .to(0.2, { opacity: 0 })
            .call(() => {
              majiang.active = false; // 隐藏麻将
              majiang.opacity = 255; // 恢复透明度
            })
            .start();
        };

        // 淡出所有麻将
        for (let majiang of t.majiangArr) {
          fadeOutMajiang(majiang);
        }

        // 处理走麻将的逻辑
        const handleZoumajiang = (index) => {
          const zoumajiang = t.zoumajiangArr[index];
          if (zoumajiang) {
            zoumajiang.opacity = 0; // 初始化透明度为0
            zoumajiang.active = true; // 激活走麻将
            cc.tween(zoumajiang).to(0.2, { opacity: 255 }).start(); // 动画淡入
            // 设置位置和动画
            zoumajiang.x = 100 * index - 200;
            zoumajiang.y = -170;
            zoumajiang.getComponent(sp.Skeleton).setAnimation(0, "zoulu", true); // 播放走路动画

            t.scheduleOnce(() => {
              zoumajiang.getComponent(sp.Skeleton).setSkin(t.nowSkin); // 设置皮肤
            });

            cc.tween(zoumajiang)
              .by(1.5, { x: 1000 }) // 移动
              .call(() => {
                zoumajiang.active = false; // 动画完成后隐藏
              })
              .start();
          }
        };

        // 处理所有走麻将
        for (let r = 0; r < t.zoumajiangArr.length; r++) {
          handleZoumajiang(r);
        }

        // 调用皮肤重置方法
        t.scheduleOnce(() => {
          t.rSkin();
        }, 1);
      }, 1);

      this.nowNumber = 0; // 重置当前数字
    }
  };
  cc__decorate([ccp_property(cc.Node)], _ctor.prototype, "majiangArr", undefined);
  cc__decorate([ccp_property(cc.Node)], _ctor.prototype, "renwu", undefined);
  cc__decorate([ccp_property(cc.Node)], _ctor.prototype, "zoumajiangArr", undefined);
  return cc__decorate([ccp_ccclass], _ctor);
}(s.default);
exports.default = def_MajiangAnimation;